package com.xunge.service;

import com.xunge.pojo.Course;
import com.xunge.pojo.CourseQueryParam;
import com.xunge.pojo.PageResult;
import com.xunge.pojo.Result;

import java.util.List;

public interface CourseService {

    /**
     * 分页查询课程信息
     */
    PageResult<Course> page(CourseQueryParam courseQueryParam);

    /**
     * 新增课程
     */
    void save(Course course);

    /**
     * 根据ID查询课程
     */
    Course getById(Integer id);

    /**
     * 根据ID修改课程
     */
    void update(Course course);

    /**
     * 根据ID删除课程
     */
    void deleteById(Integer id);

    /**
     * 批量删除课程
     */
    Result delete(List<Integer> ids);

    /**
     * 查询所有课程
     */
    List<Course> listAll();

    /**
     * 检查课程名称是否已存在
     * @param name 课程名称
     * @param excludeId 排除的课程ID（编辑时使用）
     * @return 是否存在重复
     */
    boolean isNameExists(String name, Integer excludeId);

    /**
     * 检查课程代码是否已存在
     * @param code 课程代码
     * @param excludeId 排除的课程ID（编辑时使用）
     * @return 是否存在重复
     */
    boolean isCodeExists(String code, Integer excludeId);

    /**
     * 检查课程是否可以删除（检查是否有关联数据）
     * @param courseId 课程ID
     * @return 是否可以删除
     */
    boolean canDelete(Integer courseId);

    /**
     * 获取课程的关联信息
     * @param courseId 课程ID
     * @return 关联信息描述
     */
    String getCourseRelations(Integer courseId);
} 